package com.aspire.aimini.constant;

/**
 * 通用常量类
 *
 * @author wangguiyou
 * @date 2024-12-19
 * @description 定义系统中使用的通用常量
 */
public class CommonConstant {

    /**
     * 成功状态码
     */
    public static final Integer SUCCESS_CODE = 200;

    /**
     * 失败状态码
     */
    public static final Integer ERROR_CODE = 500;

    /**
     * 参数错误状态码
     */
    public static final Integer PARAM_ERROR_CODE = 400;

    /**
     * 未授权状态码
     */
    public static final Integer UNAUTHORIZED_CODE = 401;

    /**
     * 禁止访问状态码
     */
    public static final Integer FORBIDDEN_CODE = 403;

    /**
     * 资源不存在状态码
     */
    public static final Integer NOT_FOUND_CODE = 404;

    /**
     * 默认页码
     */
    public static final Integer DEFAULT_PAGE_NUM = 1;

    /**
     * 默认页面大小
     */
    public static final Integer DEFAULT_PAGE_SIZE = 10;

    /**
     * 最大页面大小
     */
    public static final Integer MAX_PAGE_SIZE = 100;

    /**
     * 删除标记 - 未删除
     */
    public static final Integer NOT_DELETED = 0;

    /**
     * 删除标记 - 已删除
     */
    public static final Integer DELETED = 1;

    /**
     * 状态 - 启用
     */
    public static final Integer STATUS_ENABLED = 1;

    /**
     * 状态 - 禁用
     */
    public static final Integer STATUS_DISABLED = 0;

    /**
     * 默认密码
     */
    public static final String DEFAULT_PASSWORD = "123456";

    /**
     * 超级管理员角色
     */
    public static final String ROLE_ADMIN = "admin";

    /**
     * 普通用户角色
     */
    public static final String ROLE_USER = "user";

    /**
     * Token前缀
     */
    public static final String TOKEN_PREFIX = "Bearer ";

    /**
     * Token请求头
     */
    public static final String TOKEN_HEADER = "Authorization";

    /**
     * 用户ID请求头
     */
    public static final String USER_ID_HEADER = "X-User-Id";

    /**
     * 请求ID请求头
     */
    public static final String REQUEST_ID_HEADER = "X-Request-Id";

    /**
     * 日期时间格式
     */
    public static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";

    /**
     * 日期格式
     */
    public static final String DATE_FORMAT = "yyyy-MM-dd";

    /**
     * 时间格式
     */
    public static final String TIME_FORMAT = "HH:mm:ss";

    /**
     * UTF-8编码
     */
    public static final String UTF8 = "UTF-8";

    /**
     * 文件上传路径
     */
    public static final String UPLOAD_PATH = "/uploads";

    /**
     * 图片文件扩展名
     */
    public static final String[] IMAGE_EXTENSIONS = { ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".webp" };

    /**
     * 最大文件大小（10MB）
     */
    public static final Long MAX_FILE_SIZE = 10 * 1024 * 1024L;

    private CommonConstant() {
        // 私有构造函数，防止实例化
    }
}